package com.sample.snl.frontend.LexicalAnalysis;

import java.io.IOException;

public class InDotState extends State {
    Automaton automaton;

    public InDotState(Automaton a) {
        this.automaton = a;
    }

    @Override
    void HandleCharacter(int ch) throws IOException {
        if (automaton.isAlphabetic(ch)) {
            automaton.unGetChar(ch);
            automaton.stringBuilder.deleteCharAt(automaton.stringBuilder.length() - 1);
            automaton.token = new Token(LexicalAnalyser.line, LexicalAnalyser.column, TokenType.DOT, automaton.stringBuilder.toString());
            //LexicalAnalyser.LOG.debug("Recognized Token:" + automaton.token);
            automaton.gotToken = true;
        }
        if (ch == '.') {
            automaton.setState(automaton.InRangeState);
            return;
        }
        while (automaton.isBlank(ch)) ch = automaton.getChar();
        if (ch == -1) {
            automaton.token = new Token(LexicalAnalyser.line, LexicalAnalyser.column, TokenType.EOF, ".");
            //LexicalAnalyser.LOG.trace(automaton.stringBuilder.toString() + "  " + automaton.token);
            automaton.gotToken = true;
            return;
        }
        //LexicalAnalyser.LOG.trace("Wrong dot!");
        automaton.unGetChar(ch);
        automaton.setState(automaton.ErrorState);
    }
}
